unit UPessoa;

interface

uses  SysUtils, DateUtils;

type
  TPessoa = class
    private
      FCodigo: Integer;
      FNascimento: TDateTime;
      FNome: String;
      FIdade: Integer;

      function GetCodigo: Integer;
      function GetNascimento: TDateTime;
      function GetNome: String;

      procedure SetCodigo(const Value: Integer);
      procedure SetNascimento(const Value: TDateTime);
      procedure SetNome(const Value: String);
      function GetIdade: Integer;

    protected
    public
      procedure SetIdade(const Value: TDateTime);
      property Codigo: Integer read GetCodigo write SetCodigo;
      property Nome: String read GetNome write SetNome;
      property Nascimento: TDateTime read GetNascimento write SetNascimento;
      property Idade: Integer read GetIdade; 
  end;

implementation

{ TPessoa }

function TPessoa.GetCodigo: Integer;
begin
  Result := FCodigo;
end;

function TPessoa.GetIdade: Integer;
begin
  Result := FIdade;
end;

function TPessoa.GetNascimento: TDateTime;
begin
  Result := FNascimento;
end;

function TPessoa.GetNome: String;
begin
  Result := FNome;
end;

procedure TPessoa.SetCodigo(const Value: Integer);
begin
  FCodigo := Value;
end;

procedure TPessoa.SetIdade(const Value: TDateTime);
begin
  FIdade := YearsBetween(Now, Value);
end;

procedure TPessoa.SetNascimento(const Value: TDateTime);
begin
  FNascimento := Value;
end;

procedure TPessoa.SetNome(const Value: String);
begin
  FNome := Value;
end;

end.
 